def my_abs1(x):
    if x >= 0:
        return x
    else:
        return -x


print(my_abs1(-1))  # 1


# 语句什么都不做，那有什么用？实际上pass可以用来作为占位符，比如现在还没想好怎么写函数的代码，就可以先放一个pass，让代码能运行起来，如果没有pass会报错。
def nop():
    pass


# 参数检查
# def my_abs2(x):
#     if not isinstance(x, (int, float)):
#         raise TypeError('bad operand type')
#     if x >= 0:
#         return x
#     else:
#         return -x
#
#
# print(my_abs2("1"))


# 返回多个值
def move(x, y):
    return x + 1, y + 1


x, y = move(1, 2)
print(x, y)  # 2 3
# 原来返回值是一个tuple！但是，在语法上，返回一个tuple可以省略括号，而多个变量可以同时接收一个tuple，按位置赋给对应的值，所以，Python的函数返回多值其实就是返回一个tuple，但写起来更方便。
z = move(1, 2)
print(z)  # (2, 3)

# 定义函数时，需要确定函数名和参数个数；
#
# 如果有必要，可以先对参数的数据类型做检查；
#
# 函数体内部可以用return随时返回函数结果；
#
# 函数执行完毕也没有return语句时，自动return None。
#
# 函数可以同时返回多个值，但其实就是一个tuple。
